#pragma once

#include "QSPrerequisites.h"
#include "QSSystems.h"

namespace Ogre
{
	class Root;
	class RenderWindow;
	class SceneManager;
}

namespace QS
{	
	class OgreRenderSystem : public RenderSystem
	{
	public:
		OgreRenderSystem(Engine* e) : RenderSystem(e), mRoot(0), mWindow(0), mSceneMgr(0) {}
		~OgreRenderSystem() { }

		virtual void initialize();
		virtual void shutdown();
		virtual void update();

		virtual bool isRenderWindowClosed() const;

		virtual size_t getWindowHandle();
		Ogre::RenderWindow* getOgreRenderWindow() const { return mWindow; }
		Ogre::SceneManager* getOgreSceneManager() const { return mSceneMgr; }

	private:
		Ogre::Root* mRoot;
		Ogre::RenderWindow* mWindow;
		Ogre::SceneManager* mSceneMgr;
	};
}